package com.jingdianjichi.oss.config;

import com.jingdianjichi.oss.adapter.adapterImpl.StorageAdapter;
import com.jingdianjichi.oss.adapter.adapterImpl.AliStorageAdapter;
import com.jingdianjichi.oss.adapter.adapterImpl.MinioStorageAdapter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/*
    把我们想要的类在这里吐出去
 */
@Configuration
@RefreshScope                               //这个注解就是动态刷新的,因为下面的bean刷新了这里才要刷新的
public class StorageConfig_Adapter {

    @Value("${storage.service.type}")
    private String storageType;


    //你也可以根据枚举去进行切换的,和我们的题目一样,但是这里就先这样是简化版本的,这里就是直接去new了
    @Bean
    @RefreshScope                               //当你动态变化的时候,这里就重新干一个bean进去,这样我们就不用重启服务器了
    public StorageAdapter storageAdapter(){
        if ("minio".equals(storageType))
        {
            return new MinioStorageAdapter();
        }
        else if ("aliyun".equals(storageType))
        {
            return new AliStorageAdapter();
        }
        else
        {
            //这个异常就是用于处理非法参数的
            throw new IllegalArgumentException("未找到对应的文件存储处理器");
        }
    }
}
